package org.ghost.wechat.platform.dto.wechat.menu;

import com.fasterxml.jackson.annotation.JsonProperty;

import java.io.Serializable;
import java.util.List;

/**
 * @author 01
 */
public class WeChatMenuDTO implements Serializable {
    private static final long serialVersionUID = -5068019864953307411L;
    /**
     * 菜单的响应动作类型，
     * view表示网页类型，
     * click表示点击类型，
     * miniprogram表示小程序类型
     * media_id微信服务器会将开发者填写的永久素材id对应的素材下发给用户,永久素材类型可以是图片、音频、视频、图文消息
     * view_limited微信客户端将打开开发者在按钮中填写的永久素材id对应的图文消息URL,永久素材类型只支持图文消息
     */
    private String type;
    /**
     * 一级菜单最多4个汉字，二级菜单最多7个汉字，多出来的部分将会以“...”代替
     */
    private String name;
    /**
     * click等点击类型必须,菜单KEY值，用于消息接口推送，不超过128字节
     */
    private String key;
    /**
     * view、miniprogram类型必须	网页 链接，用户点击菜单可打开链接，不超过1024字节。
     * type为miniprogram时，不支持小程序的老版本客户端将打开本url
     */
    private String url;
    /**
     * miniprogram类型必须,小程序的appid（仅认证公众号可配置）
     */
    private String appId;
    /**
     * miniprogram类型必须,小程序的页面路径
     */
    private String pagePath;
    /**
     * media_id类型和view_limited类型必须,调用新增永久素材接口返回的合法media_id
     */
    private String mediaId;

    private List<WeChatMenuDTO> subButton;

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getKey() {
        return key;
    }

    public void setKey(String key) {
        this.key = key;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    @JsonProperty(value = "sub_button")
    public List<WeChatMenuDTO> getSubButton() {
        return subButton;
    }

    @JsonProperty(value = "sub_button")
    public void setSubButton(List<WeChatMenuDTO> subButton) {
        this.subButton = subButton;
    }

    @JsonProperty(value = "appid")
    public String getAppId() {
        return appId;
    }

    @JsonProperty(value = "appid")
    public void setAppId(String appId) {
        this.appId = appId;
    }

    @JsonProperty(value = "pagepath")
    public String getPagePath() {
        return pagePath;
    }

    @JsonProperty(value = "pagepath")
    public void setPagePath(String pagePath) {
        this.pagePath = pagePath;
    }

    @JsonProperty(value = "media_id")
    public String getMediaId() {
        return mediaId;
    }

    @JsonProperty(value = "media_id")
    public void setMediaId(String mediaId) {
        this.mediaId = mediaId;
    }

    @Override
    public String toString() {
        return "WeChatMenuDTO{" +
                "type='" + type + '\'' +
                ", name='" + name + '\'' +
                ", key='" + key + '\'' +
                ", url='" + url + '\'' +
                ", appId='" + appId + '\'' +
                ", pagePath='" + pagePath + '\'' +
                ", mediaId='" + mediaId + '\'' +
                ", subButton=" + subButton +
                '}';
    }
}
